Skip to content

Conversation

@alamb
Copy link
Contributor

@alamb alamb commented Jan 9, 2026

Which issue does this PR close?

Rationale for this change

Creating Arrays via ArrayData / make_array has overhead (at least 2 Vec allocations) compared to simply creating the arrays directly

ViewArrays also have an extra Vec allocation (to hold their buffers)

What changes are included in this PR?

Update the parquet reader to create ViewArrays directly

Are these changes tested?

By CI

Are there any user-facing changes?

@github-actions github-actions bot added the parquet Changes to the parquet crate label Jan 9, 2026
pub fn into_array(self, null_buffer: Option<Buffer>, data_type: &ArrowType) -> ArrayRef {
let len = self.views.len();
let views = Buffer::from_vec(self.views);
let views = ScalarBuffer::from(self.views);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new formulation is simpler too, which is a nice side effect

@alamb

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb alamb marked this pull request as draft January 10, 2026 12:11
@alamb
Copy link
Contributor Author

alamb commented Jan 10, 2026

run benchmark arrow_reader

@alamb
Copy link
Contributor Author

alamb commented Jan 10, 2026

This appears to show reading StringView getting slower. I will try and reproduce

@alamb-ghbot
Copy link

🤖 ./gh_compare_arrow.sh gh_compare_arrow.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/less_parquet_view_allocations (2ed62c2) to 96637fc diff
BENCH_NAME=arrow_reader
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental --bench arrow_reader
BENCH_FILTER=
BENCH_BRANCH_NAME=alamb_less_parquet_view_allocations
Results will be posted here when complete

@alamb-ghbot

This comment was marked as outdated.

Copy link
Contributor

@scovich scovich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@alamb alamb marked this pull request as ready for review January 13, 2026 12:17
@alamb
Copy link
Contributor Author

alamb commented Jan 13, 2026

🤔 looks like this maybe made things slower -- will investigate

group                                                                                                      alamb_less_parquet_view_allocations    main
-----                                                                                                      -----------------------------------    ----

arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    247.2±3.07µs        ? ?/sec    1.05    259.0±3.79µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.08    248.4±3.81µs        ? ?/sec    1.00    229.5±2.43µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.00    256.8±5.74µs        ? ?/sec    1.00    256.0±3.58µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.27    370.5±3.94µs        ? ?/sec    1.00    292.5±1.63µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.13    345.4±3.14µs        ? ?/sec    1.00    305.8±1.22µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.20    319.2±7.52µs        ? ?/sec    1.00    265.4±1.64µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.25    378.6±4.48µs        ? ?/sec    1.00    301.7±5.25µs        ? ?/sec

...

arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    252.8±3.56µs        ? ?/sec    1.03    261.6±5.36µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.09    251.1±2.55µs        ? ?/sec    1.00    229.8±1.92µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.00    256.7±3.02µs        ? ?/sec    1.00    256.1±2.58µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.13    500.0±7.89µs        ? ?/sec    1.00    444.1±2.78µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.15   386.8±22.22µs        ? ?/sec    1.00    337.2±3.66µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.12    508.2±8.79µs        ? ?/sec    1.00   453.9±10.55µs        ? ?/sec

@alamb alamb marked this pull request as draft January 13, 2026 12:21
@alamb
Copy link
Contributor Author

alamb commented Jan 13, 2026

I could not reproduce the benchmark results locally

     Running benches/arrow_reader.rs (target/release/deps/arrow_reader-0c5ec49ee5cbea6a)
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string
                        time:   [160.36 µs 160.64 µs 161.02 µs]
                        change: [−0.4158% −0.0942% +0.2111%] (p = 0.56 > 0.05)
                        No change in performance detected.
Found 11 outliers among 100 measurements (11.00%)
  3 (3.00%) high mild
  8 (8.00%) high severe
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs
                        time:   [147.70 µs 148.37 µs 149.07 µs]
                        change: [+0.7348% +1.2863% +1.8236%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 25 outliers among 100 measurements (25.00%)
  19 (19.00%) low mild
  4 (4.00%) high mild
  2 (2.00%) high severe
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs
                        time:   [147.02 µs 147.41 µs 147.88 µs]
                        change: [−1.3623% −0.8303% −0.2939%] (p = 0.00 < 0.05)
                        Change within noise threshold.
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs
                        time:   [142.34 µs 142.93 µs 143.58 µs]
                        change: [−1.6259% −0.8845% −0.2890%] (p = 0.01 < 0.05)
                        Change within noise threshold.
Found 24 outliers among 100 measurements (24.00%)
  9 (9.00%) low severe
  2 (2.00%) low mild
  6 (6.00%) high mild
  7 (7.00%) high severe

However, note the number of outliers found

I will see if the benchmark needs adjusting (perhaps with more rows, etc)

@alamb

This comment was marked as outdated.

1 similar comment
@alamb

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb alamb marked this pull request as ready for review January 15, 2026 12:17
@alamb-ghbot

This comment was marked as outdated.

let views = ScalarBuffer::from(self.views);
let nulls = null_buffer
.map(|b| NullBuffer::new(BooleanBuffer::new(b, 0, len)))
.filter(|n| n.null_count() != 0);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

group                                                                                                      alamb_less_parquet_view_allocations    main
-----                                                                                                      -----------------------------------    ----
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                           1.00   1007.2±6.04µs        ? ?/sec    1.00   1007.4±5.46µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                          1.00   1241.8±5.22µs        ? ?/sec    1.02  1261.2±11.51µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                            1.00  1014.6±14.09µs        ? ?/sec    1.00  1017.6±19.81µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, mandatory, no NULLs                                     1.00   502.1±29.06µs        ? ?/sec    1.01    509.2±3.22µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, half NULLs                                    1.00   661.4±17.65µs        ? ?/sec    1.06    699.8±6.51µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, no NULLs                                      1.00    488.9±8.17µs        ? ?/sec    1.06    518.9±3.66µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, mandatory, no NULLs                                          1.00    549.0±3.28µs        ? ?/sec    1.01    553.7±6.72µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, half NULLs                                         1.00    723.1±6.29µs        ? ?/sec    1.04   749.7±20.46µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, no NULLs                                           1.01   563.1±28.07µs        ? ?/sec    1.00    558.0±4.11µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.01    280.1±2.11µs        ? ?/sec    1.00    277.4±3.74µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.10    262.1±5.11µs        ? ?/sec    1.00    239.2±3.27µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.00    276.9±2.46µs        ? ?/sec    1.03   286.4±26.14µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.00    350.1±1.87µs        ? ?/sec    1.07    374.6±6.98µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.00    344.7±4.78µs        ? ?/sec    1.01    348.5±2.09µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.05    313.8±3.08µs        ? ?/sec    1.00    299.5±3.04µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.00    358.1±3.96µs        ? ?/sec    1.06    380.8±2.87µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs     1.06   972.6±13.08µs        ? ?/sec    1.00    917.6±8.06µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, half NULLs    1.09    824.5±3.74µs        ? ?/sec    1.00    759.0±8.68µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, no NULLs      1.06    978.1±7.28µs        ? ?/sec    1.00    926.8±9.95µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                 1.00    295.1±2.98µs        ? ?/sec    1.02    300.0±8.43µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                1.07    487.6±3.97µs        ? ?/sec    1.00    455.7±2.79µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                  1.00    304.2±8.06µs        ? ?/sec    1.01    307.2±7.12µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, mandatory, no NULLs        1.04    202.6±1.49µs        ? ?/sec    1.00    195.4±3.97µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, half NULLs       1.00    319.4±1.42µs        ? ?/sec    1.06    337.6±1.52µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, no NULLs         1.04    208.4±1.39µs        ? ?/sec    1.00    200.3±1.11µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, mandatory, no NULLs                    1.00    118.2±0.40µs        ? ?/sec    1.00    117.7±2.54µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, half NULLs                   1.00    275.9±1.37µs        ? ?/sec    1.09    299.5±5.86µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, no NULLs                     1.01    124.7±0.98µs        ? ?/sec    1.00    123.1±2.46µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, mandatory, no NULLs                    1.07    736.7±4.04µs        ? ?/sec    1.00    690.9±7.79µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, half NULLs                   1.10    585.7±4.13µs        ? ?/sec    1.00    531.9±4.43µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, no NULLs                     1.07    748.5±8.82µs        ? ?/sec    1.00    701.7±6.76µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, mandatory, no NULLs                                1.00     65.8±3.08µs        ? ?/sec    1.05     68.9±5.21µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, half NULLs                               1.16    254.6±4.80µs        ? ?/sec    1.00    219.0±2.13µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, no NULLs                                 1.00     71.9±0.76µs        ? ?/sec    1.06     76.5±5.68µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, mandatory, no NULLs                     1.09     94.4±1.24µs        ? ?/sec    1.00     86.7±0.62µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, half NULLs                    1.00    209.3±2.57µs        ? ?/sec    1.09    228.6±5.56µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, no NULLs                      1.08     99.5±0.51µs        ? ?/sec    1.00     92.0±0.48µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, mandatory, no NULLs                                 1.00      9.1±0.18µs        ? ?/sec    1.00      9.2±0.15µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, half NULLs                                1.00    164.8±0.60µs        ? ?/sec    1.14    187.7±2.29µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, no NULLs                                  1.01     14.5±0.33µs        ? ?/sec    1.00     14.3±0.26µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, mandatory, no NULLs                     1.08    184.1±2.92µs        ? ?/sec    1.00    170.7±4.02µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, half NULLs                    1.00   330.5±17.01µs        ? ?/sec    1.01    335.1±4.44µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, no NULLs                      1.08    191.1±9.14µs        ? ?/sec    1.00    176.2±1.54µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, mandatory, no NULLs                                 1.03     14.1±0.43µs        ? ?/sec    1.00     13.6±0.21µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, half NULLs                                1.00    243.6±0.88µs        ? ?/sec    1.06    257.9±3.38µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, no NULLs                                  1.00     19.7±0.58µs        ? ?/sec    1.01     20.0±0.25µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, mandatory, no NULLs                     1.07    366.1±9.89µs        ? ?/sec    1.00    340.9±3.48µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, half NULLs                    1.14    390.6±2.03µs        ? ?/sec    1.00    344.0±1.87µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, no NULLs                      1.07    372.3±5.90µs        ? ?/sec    1.00    348.2±4.45µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, mandatory, no NULLs                                 1.00     25.6±0.34µs        ? ?/sec    1.06     27.0±0.37µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, half NULLs                                1.17    219.5±0.93µs        ? ?/sec    1.00    187.3±0.82µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, no NULLs                                  1.00     32.9±0.42µs        ? ?/sec    1.02     33.7±0.40µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00    109.1±2.29µs        ? ?/sec    1.02    111.3±1.00µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    128.5±0.75µs        ? ?/sec    1.01    129.8±0.94µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    112.2±1.20µs        ? ?/sec    1.02    114.4±1.26µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, mandatory, no NULLs                                1.00    160.5±4.69µs        ? ?/sec    1.00    160.3±1.19µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, half NULLs                               1.00    221.4±7.44µs        ? ?/sec    1.00    220.6±1.01µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, no NULLs                                 1.00    164.5±0.64µs        ? ?/sec    1.01    166.2±1.57µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00     74.0±0.66µs        ? ?/sec    1.02     75.2±0.30µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.00    176.1±2.49µs        ? ?/sec    1.00    176.6±1.19µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00     79.4±0.85µs        ? ?/sec    1.00     79.5±1.44µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.01    142.4±0.32µs        ? ?/sec    1.00   140.4±18.65µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, half NULLs                          1.01    213.3±2.12µs        ? ?/sec    1.00    210.5±0.99µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, no NULLs                            1.04    148.5±1.87µs        ? ?/sec    1.00    142.5±3.02µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, mandatory, no NULLs                                1.03     72.4±0.78µs        ? ?/sec    1.00     70.3±1.75µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, half NULLs                               1.03    177.5±5.72µs        ? ?/sec    1.00    172.4±1.12µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, no NULLs                                 1.04     78.7±1.18µs        ? ?/sec    1.00     75.7±0.72µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.02    110.3±1.91µs        ? ?/sec    1.00    108.2±1.19µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    130.9±0.76µs        ? ?/sec    1.03    134.9±0.98µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    111.8±0.55µs        ? ?/sec    1.01    113.1±1.23µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, mandatory, no NULLs                                1.01    163.6±1.12µs        ? ?/sec    1.00    161.8±0.99µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, half NULLs                               1.00    233.7±2.60µs        ? ?/sec    1.00    233.2±4.58µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, no NULLs                                 1.01    169.2±1.74µs        ? ?/sec    1.00    167.6±1.39µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00    200.4±0.61µs        ? ?/sec    1.01    202.8±1.62µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.00    248.9±4.58µs        ? ?/sec    1.00    249.0±0.97µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00    207.9±2.25µs        ? ?/sec    1.00    208.6±1.75µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.00    142.7±0.92µs        ? ?/sec    1.08    153.7±1.02µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, half NULLs                          1.00    216.2±0.93µs        ? ?/sec    1.06    229.3±1.38µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, no NULLs                            1.00    146.7±0.81µs        ? ?/sec    1.08    159.1±1.21µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, mandatory, no NULLs                                1.05    102.3±1.30µs        ? ?/sec    1.00     97.8±0.64µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, half NULLs                               1.02    197.6±1.88µs        ? ?/sec    1.00    193.4±1.51µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, no NULLs                                 1.03    109.2±1.62µs        ? ?/sec    1.00    106.0±0.82µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, mandatory, no NULLs                                      1.00     77.3±2.35µs        ? ?/sec    1.00     77.4±0.75µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, half NULLs                                     1.00    101.7±0.21µs        ? ?/sec    1.00    101.8±1.10µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, no NULLs                                       1.00     79.8±1.32µs        ? ?/sec    1.00     80.1±0.45µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, mandatory, no NULLs                                           1.00    106.4±0.42µs        ? ?/sec    1.01    108.0±2.63µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, half NULLs                                          1.01    173.2±6.18µs        ? ?/sec    1.00    171.4±1.80µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, no NULLs                                            1.00    110.8±0.62µs        ? ?/sec    1.01    111.7±0.82µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, mandatory, no NULLs                               1.01     42.8±0.24µs        ? ?/sec    1.00     42.4±0.21µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, half NULLs                              1.02    139.7±0.91µs        ? ?/sec    1.00    136.7±1.03µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, no NULLs                                1.01     47.0±0.60µs        ? ?/sec    1.00     46.7±0.35µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, mandatory, no NULLs                                      1.09    110.2±2.05µs        ? ?/sec    1.00    101.3±1.00µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, half NULLs                                     1.02    176.0±1.46µs        ? ?/sec    1.00    172.5±1.01µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, no NULLs                                       1.08    115.0±2.24µs        ? ?/sec    1.00    106.7±1.02µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, mandatory, no NULLs                                           1.00     36.7±0.15µs        ? ?/sec    1.00     36.8±0.47µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, half NULLs                                          1.01    136.8±1.25µs        ? ?/sec    1.00    135.2±2.04µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, no NULLs                                            1.00     41.2±0.13µs        ? ?/sec    1.00     41.3±0.47µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, mandatory, no NULLs                                      1.00     82.6±0.86µs        ? ?/sec    1.02     84.4±1.87µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, half NULLs                                     1.00    100.1±0.91µs        ? ?/sec    1.01    100.7±0.44µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, no NULLs                                       1.00     85.3±0.72µs        ? ?/sec    1.02     86.8±0.51µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, mandatory, no NULLs                                           1.00    107.1±1.91µs        ? ?/sec    1.02    109.0±3.11µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, half NULLs                                          1.00    163.6±5.81µs        ? ?/sec    1.01    165.2±9.61µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, no NULLs                                            1.00    111.5±2.18µs        ? ?/sec    1.03    114.7±7.15µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, mandatory, no NULLs                               1.00     23.4±0.20µs        ? ?/sec    1.00     23.5±0.25µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, half NULLs                              1.00    118.3±2.39µs        ? ?/sec    1.00    118.4±1.82µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, no NULLs                                1.00     27.7±0.44µs        ? ?/sec    1.00     27.6±0.24µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, mandatory, no NULLs                                      1.11     91.5±0.54µs        ? ?/sec    1.00     82.5±0.56µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, half NULLs                                     1.00    156.7±2.60µs        ? ?/sec    1.01   157.9±23.24µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, no NULLs                                       1.10     96.5±2.02µs        ? ?/sec    1.00     88.0±1.37µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, mandatory, no NULLs                                           1.00     15.2±0.43µs        ? ?/sec    1.01     15.5±0.53µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, half NULLs                                          1.01    116.7±3.89µs        ? ?/sec    1.00    116.0±1.03µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, no NULLs                                            1.00     21.3±0.65µs        ? ?/sec    1.00     21.2±0.20µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, mandatory, no NULLs                                      1.00     80.7±1.36µs        ? ?/sec    1.00     80.6±0.37µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, half NULLs                                     1.00    101.2±0.56µs        ? ?/sec    1.01    102.0±1.43µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, no NULLs                                       1.00     83.1±0.53µs        ? ?/sec    1.00     83.1±0.61µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, mandatory, no NULLs                                           1.00    107.7±2.01µs        ? ?/sec    1.01    108.5±1.17µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, half NULLs                                          1.00    164.6±2.04µs        ? ?/sec    1.05    173.0±0.94µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, no NULLs                                            1.00    110.1±1.92µs        ? ?/sec    1.02    112.3±1.86µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, mandatory, no NULLs                               1.00    146.2±1.73µs        ? ?/sec    1.00    146.0±0.62µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, half NULLs                              1.00    188.8±1.29µs        ? ?/sec    1.01    190.4±0.96µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, no NULLs                                1.00    150.8±0.93µs        ? ?/sec    1.00    150.9±1.13µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, mandatory, no NULLs                                      1.00     88.8±3.26µs        ? ?/sec    1.09     97.0±0.58µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, half NULLs                                     1.00    157.8±2.93µs        ? ?/sec    1.04    163.9±1.60µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, no NULLs                                       1.00     92.6±0.41µs        ? ?/sec    1.11    102.8±1.14µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, mandatory, no NULLs                                           1.08     43.9±1.30µs        ? ?/sec    1.00     40.8±0.90µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, half NULLs                                          1.00    131.7±1.78µs        ? ?/sec    1.02    133.9±2.04µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, no NULLs                                            1.09     50.6±1.06µs        ? ?/sec    1.00     46.6±2.27µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, mandatory, no NULLs                                       1.00     81.3±2.81µs        ? ?/sec    1.01     81.8±0.36µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, half NULLs                                      1.00    102.9±1.94µs        ? ?/sec    1.00    102.9±2.49µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, no NULLs                                        1.00     83.9±0.60µs        ? ?/sec    1.01     84.7±0.33µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, mandatory, no NULLs                                            1.00    108.1±1.76µs        ? ?/sec    1.01    109.5±1.49µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, half NULLs                                           1.00    169.1±1.83µs        ? ?/sec    1.01    170.0±2.79µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, no NULLs                                             1.00    112.7±0.64µs        ? ?/sec    1.02    114.6±1.39µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, mandatory, no NULLs                                1.00     35.0±0.81µs        ? ?/sec    1.00     34.9±0.16µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, half NULLs                               1.00    130.3±2.43µs        ? ?/sec    1.00    129.9±5.94µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, no NULLs                                 1.00     38.9±0.30µs        ? ?/sec    1.00     39.0±0.39µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, mandatory, no NULLs                                       1.10    102.8±1.06µs        ? ?/sec    1.00     93.8±0.76µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, half NULLs                                      1.02    168.9±1.63µs        ? ?/sec    1.00    166.2±5.23µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, no NULLs                                        1.08    107.5±0.88µs        ? ?/sec    1.00     99.6±1.73µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, mandatory, no NULLs                                            1.00     28.6±0.18µs        ? ?/sec    1.00     28.6±0.29µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, half NULLs                                           1.01    128.4±1.34µs        ? ?/sec    1.00    127.3±1.43µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, no NULLs                                             1.00     33.3±0.14µs        ? ?/sec    1.00     33.4±0.52µs        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings half NULLs                                     1.03      7.5±0.15ms        ? ?/sec    1.00      7.3±0.10ms        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings no NULLs                                       1.02     13.5±0.46ms        ? ?/sec    1.00     13.2±0.24ms        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, mandatory, no NULLs                                     1.00    489.7±2.93µs        ? ?/sec    1.05    514.1±6.09µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, half NULLs                                    1.00    663.2±5.61µs        ? ?/sec    1.06    700.1±4.16µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, no NULLs                                      1.00    497.8±5.95µs        ? ?/sec    1.04    519.7±5.37µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, mandatory, no NULLs                                          1.02   672.1±41.97µs        ? ?/sec    1.00   659.2±13.17µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, half NULLs                                         1.00   778.5±26.81µs        ? ?/sec    1.02    795.4±6.25µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, no NULLs                                           1.00    675.1±8.29µs        ? ?/sec    1.01    680.4±9.25µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, mandatory, no NULLs                                1.00    335.0±4.32µs        ? ?/sec    1.00    334.9±2.43µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, half NULLs                               1.09    411.1±2.72µs        ? ?/sec    1.00    378.1±4.92µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, no NULLs                                 1.00    339.7±2.96µs        ? ?/sec    1.00    340.6±5.03µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    274.8±3.32µs        ? ?/sec    1.00    273.5±2.32µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.16    270.3±5.97µs        ? ?/sec    1.00    232.8±1.59µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.03    287.8±1.96µs        ? ?/sec    1.00    279.1±2.46µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.00   494.0±21.43µs        ? ?/sec    1.02    504.5±4.08µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.05    379.7±6.70µs        ? ?/sec    1.00    361.8±2.36µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.00   501.5±35.47µs        ? ?/sec    1.03   515.5±14.32µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, mandatory, no NULLs                                     1.00     92.8±0.39µs        ? ?/sec    1.01     93.6±0.47µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, half NULLs                                    1.01    111.1±1.61µs        ? ?/sec    1.00    110.4±0.55µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, no NULLs                                      1.01     96.8±4.97µs        ? ?/sec    1.00     96.0±0.38µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, mandatory, no NULLs                                          1.00    126.9±1.28µs        ? ?/sec    1.01    127.9±2.72µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, half NULLs                                         1.00    184.9±1.17µs        ? ?/sec    1.00    184.6±6.87µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, no NULLs                                           1.00    131.2±0.81µs        ? ?/sec    1.01    132.2±0.52µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, mandatory, no NULLs                              1.01     43.0±0.27µs        ? ?/sec    1.00     42.6±0.13µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, half NULLs                             1.00    138.2±0.83µs        ? ?/sec    1.00    137.6±1.14µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, no NULLs                               1.01     47.2±0.47µs        ? ?/sec    1.00     46.7±0.42µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, mandatory, no NULLs                                     1.08    110.1±0.50µs        ? ?/sec    1.00    101.7±0.70µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, half NULLs                                    1.03    177.8±6.29µs        ? ?/sec    1.00    172.3±0.85µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, no NULLs                                      1.08    115.3±3.22µs        ? ?/sec    1.00    107.1±1.75µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, mandatory, no NULLs                                          1.00     36.4±0.31µs        ? ?/sec    1.01     36.6±0.31µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, half NULLs                                         1.01    136.1±4.84µs        ? ?/sec    1.00    134.8±0.91µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, no NULLs                                           1.00     41.2±0.20µs        ? ?/sec    1.00     41.3±0.23µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, mandatory, no NULLs                                     1.00     82.5±1.50µs        ? ?/sec    1.02     84.3±1.01µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, half NULLs                                    1.00    100.5±2.08µs        ? ?/sec    1.01    101.5±3.51µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, no NULLs                                      1.00     85.4±0.69µs        ? ?/sec    1.02     87.3±1.30µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, mandatory, no NULLs                                          1.00    107.1±4.34µs        ? ?/sec    1.02    108.9±1.92µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, half NULLs                                         1.00    163.2±0.92µs        ? ?/sec    1.00    163.7±1.79µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, no NULLs                                           1.00    111.3±4.61µs        ? ?/sec    1.02    113.3±0.84µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, mandatory, no NULLs                              1.00     24.0±0.18µs        ? ?/sec    1.00     24.1±0.22µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, half NULLs                             1.01    118.8±1.85µs        ? ?/sec    1.00    117.8±0.58µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, no NULLs                               1.01     28.4±0.33µs        ? ?/sec    1.00     28.2±0.17µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, mandatory, no NULLs                                     1.10     91.6±0.74µs        ? ?/sec    1.00     83.1±0.80µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, half NULLs                                    1.02    157.7±1.86µs        ? ?/sec    1.00    154.2±2.92µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, no NULLs                                      1.10     97.3±4.70µs        ? ?/sec    1.00     88.5±1.29µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, mandatory, no NULLs                                          1.05     19.2±0.28µs        ? ?/sec    1.00     18.3±0.55µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, half NULLs                                         1.01    117.1±2.37µs        ? ?/sec    1.00    116.1±2.04µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, no NULLs                                           1.06     23.8±0.47µs        ? ?/sec    1.00     22.4±0.20µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, mandatory, no NULLs                                     1.01     81.7±1.03µs        ? ?/sec    1.00     81.1±1.10µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, half NULLs                                    1.00    101.3±1.49µs        ? ?/sec    1.01    101.9±0.44µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, no NULLs                                      1.00     83.5±0.66µs        ? ?/sec    1.00     83.1±0.89µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, mandatory, no NULLs                                          1.00    107.7±1.43µs        ? ?/sec    1.00    108.0±1.13µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, half NULLs                                         1.00    165.0±2.46µs        ? ?/sec    1.06    174.2±2.55µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, no NULLs                                           1.00    110.6±2.20µs        ? ?/sec    1.02    112.5±0.62µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, mandatory, no NULLs                              1.00    146.7±1.22µs        ? ?/sec    1.00    146.8±0.94µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, half NULLs                             1.00    189.4±1.70µs        ? ?/sec    1.01    190.3±0.81µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, no NULLs                               1.00    151.4±0.63µs        ? ?/sec    1.01    152.3±2.00µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, mandatory, no NULLs                                     1.00     88.0±0.85µs        ? ?/sec    1.12     98.5±1.80µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, half NULLs                                    1.00    157.9±3.51µs        ? ?/sec    1.04    164.0±0.89µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, no NULLs                                      1.00     93.0±2.26µs        ? ?/sec    1.11    103.2±0.82µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, mandatory, no NULLs                                          1.06     43.5±1.04µs        ? ?/sec    1.00     40.9±1.42µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, half NULLs                                         1.00    131.8±0.93µs        ? ?/sec    1.02    134.3±2.49µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, no NULLs                                           1.02     49.3±1.41µs        ? ?/sec    1.00     48.3±1.92µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, mandatory, no NULLs                                      1.00     88.5±2.23µs        ? ?/sec    1.02     90.6±2.95µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, half NULLs                                     1.00    105.6±1.04µs        ? ?/sec    1.02    107.2±3.51µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, no NULLs                                       1.00     91.2±2.81µs        ? ?/sec    1.02     93.0±1.29µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, mandatory, no NULLs                                           1.00    118.1±1.83µs        ? ?/sec    1.02    120.2±0.73µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, half NULLs                                          1.00    174.6±2.08µs        ? ?/sec    1.00    175.4±1.99µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, no NULLs                                            1.00    123.0±4.06µs        ? ?/sec    1.02    126.1±7.05µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, mandatory, no NULLs                               1.01     34.9±0.44µs        ? ?/sec    1.00     34.5±0.14µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, half NULLs                              1.01    130.2±1.52µs        ? ?/sec    1.00    129.5±0.50µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, no NULLs                                1.00     39.0±0.11µs        ? ?/sec    1.00     38.8±0.16µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, mandatory, no NULLs                                      1.10    102.8±0.86µs        ? ?/sec    1.00     93.7±1.21µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, half NULLs                                     1.02    168.7±0.89µs        ? ?/sec    1.00    165.2±5.35µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, no NULLs                                       1.08    107.6±2.68µs        ? ?/sec    1.00     99.7±2.81µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, mandatory, no NULLs                                           1.01     28.8±0.29µs        ? ?/sec    1.00     28.6±0.11µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, half NULLs                                          1.00    127.7±1.11µs        ? ?/sec    1.00    127.6±3.60µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, no NULLs                                            1.00     33.4±0.22µs        ? ?/sec    1.00     33.5±0.22µs        ? ?/sec

@alamb-ghbot
Copy link

🤖 ./gh_compare_arrow.sh gh_compare_arrow.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/less_parquet_view_allocations (9e4bbb8) to d81d6c3 diff
BENCH_NAME=arrow_reader
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental --bench arrow_reader
BENCH_FILTER=
BENCH_BRANCH_NAME=alamb_less_parquet_view_allocations
Results will be posted here when complete

@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

group                                                                                                      alamb_less_parquet_view_allocations    main
-----                                                                                                      -----------------------------------    ----
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                           1.06   1070.2±6.02µs        ? ?/sec    1.00   1005.8±4.72µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                          1.00   1180.5±3.78µs        ? ?/sec    1.07  1264.1±13.94µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                            1.06   1077.0±4.94µs        ? ?/sec    1.00   1017.3±7.77µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, mandatory, no NULLs                                     1.00   485.0±11.00µs        ? ?/sec    1.04    502.7±5.71µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, half NULLs                                    1.00    666.4±8.20µs        ? ?/sec    1.05    697.3±4.76µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, no NULLs                                      1.00    498.1±4.19µs        ? ?/sec    1.04    515.8±4.64µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, mandatory, no NULLs                                          1.01   552.4±13.37µs        ? ?/sec    1.00    545.3±7.70µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, half NULLs                                         1.00   729.9±11.78µs        ? ?/sec    1.03    751.8±6.84µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, no NULLs                                           1.00    558.0±6.34µs        ? ?/sec    1.00    557.6±4.20µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    270.3±4.43µs        ? ?/sec    1.04    280.3±4.12µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.04    240.2±2.87µs        ? ?/sec    1.00    231.5±3.62µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.00    274.9±4.35µs        ? ?/sec    1.01    278.2±3.97µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.00   352.1±10.76µs        ? ?/sec    1.07    376.8±5.89µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.00    324.5±3.75µs        ? ?/sec    1.08    350.0±3.34µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.00    290.8±3.70µs        ? ?/sec    1.03    298.8±2.92µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.00    360.0±3.41µs        ? ?/sec    1.06    382.9±1.37µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs     1.09   1013.0±5.81µs        ? ?/sec    1.00    929.1±2.90µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, half NULLs    1.14    875.9±7.31µs        ? ?/sec    1.00   768.5±10.64µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, no NULLs      1.09  1024.6±18.13µs        ? ?/sec    1.00   938.9±10.14µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                 1.09    339.9±2.81µs        ? ?/sec    1.00    312.4±4.76µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                1.14    524.4±2.56µs        ? ?/sec    1.00    459.8±5.66µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                  1.10    345.9±3.94µs        ? ?/sec    1.00    314.6±7.73µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, mandatory, no NULLs        1.00    160.6±0.97µs        ? ?/sec    1.21    195.0±1.61µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, half NULLs       1.00    276.8±3.77µs        ? ?/sec    1.22    336.5±2.26µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, no NULLs         1.00    165.8±1.07µs        ? ?/sec    1.20    199.7±0.62µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, mandatory, no NULLs                    1.00     76.8±0.69µs        ? ?/sec    1.54    117.9±1.18µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, half NULLs                   1.00    233.8±3.28µs        ? ?/sec    1.27    298.0±4.98µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, no NULLs                     1.00     82.6±1.28µs        ? ?/sec    1.50    123.5±2.53µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, mandatory, no NULLs                    1.07    738.4±9.80µs        ? ?/sec    1.00    689.4±1.77µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, half NULLs                   1.13   593.4±10.86µs        ? ?/sec    1.00    525.0±3.46µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, no NULLs                     1.07    744.6±9.58µs        ? ?/sec    1.00    696.6±3.72µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, mandatory, no NULLs                                1.00     61.1±2.87µs        ? ?/sec    1.13     69.3±2.22µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, half NULLs                               1.17    258.1±4.77µs        ? ?/sec    1.00    220.7±0.77µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, no NULLs                                 1.00     73.5±5.26µs        ? ?/sec    1.08     79.4±3.09µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, mandatory, no NULLs                     1.11     95.4±5.40µs        ? ?/sec    1.00     86.0±0.35µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, half NULLs                    1.00   210.2±14.75µs        ? ?/sec    1.08    226.4±1.05µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, no NULLs                      1.08     99.5±0.73µs        ? ?/sec    1.00     92.0±0.54µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, mandatory, no NULLs                                 1.02      9.2±0.15µs        ? ?/sec    1.00      9.1±0.53µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, half NULLs                                1.00    164.7±0.66µs        ? ?/sec    1.15   189.6±17.02µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, no NULLs                                  1.02     14.3±0.15µs        ? ?/sec    1.00     14.1±0.19µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, mandatory, no NULLs                     1.09    184.7±4.49µs        ? ?/sec    1.00    169.5±0.64µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, half NULLs                    1.00    329.1±1.12µs        ? ?/sec    1.01    333.7±3.61µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, no NULLs                      1.08    189.9±2.78µs        ? ?/sec    1.00    175.8±0.60µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, mandatory, no NULLs                                 1.00     12.7±0.20µs        ? ?/sec    1.09     13.9±0.26µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, half NULLs                                1.00    245.1±5.54µs        ? ?/sec    1.05    256.3±3.84µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, no NULLs                                  1.00     19.5±0.31µs        ? ?/sec    1.00     19.5±0.25µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, mandatory, no NULLs                     1.08    367.7±5.31µs        ? ?/sec    1.00    340.8±1.65µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, half NULLs                    1.13    388.3±1.50µs        ? ?/sec    1.00    344.1±5.26µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, no NULLs                      1.08    373.5±2.21µs        ? ?/sec    1.00    346.2±1.09µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, mandatory, no NULLs                                 1.00     23.6±1.05µs        ? ?/sec    1.21     28.6±0.49µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, half NULLs                                1.17    218.0±0.94µs        ? ?/sec    1.00    185.6±2.81µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, no NULLs                                  1.00     31.8±0.35µs        ? ?/sec    1.04     33.2±0.49µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00    109.5±2.12µs        ? ?/sec    1.02    111.3±2.03µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    129.7±2.19µs        ? ?/sec    1.01    131.2±5.74µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    112.7±2.95µs        ? ?/sec    1.02    114.4±2.01µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, mandatory, no NULLs                                1.00    159.6±4.65µs        ? ?/sec    1.01    162.0±1.51µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, half NULLs                               1.00    222.0±2.45µs        ? ?/sec    1.00    220.9±1.71µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, no NULLs                                 1.00    164.3±2.01µs        ? ?/sec    1.02    167.2±3.06µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00     73.8±0.78µs        ? ?/sec    1.04     76.4±1.95µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.01    175.9±1.87µs        ? ?/sec    1.00    174.4±1.51µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00     80.8±0.21µs        ? ?/sec    1.00     80.9±1.37µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.07    145.0±2.56µs        ? ?/sec    1.00    135.2±1.08µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, half NULLs                          1.03    216.7±1.51µs        ? ?/sec    1.00    210.0±3.02µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, no NULLs                            1.06    149.8±0.48µs        ? ?/sec    1.00    140.8±0.49µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, mandatory, no NULLs                                1.00     72.4±1.18µs        ? ?/sec    1.02     73.8±0.88µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, half NULLs                               1.01    175.1±4.52µs        ? ?/sec    1.00    173.6±2.35µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, no NULLs                                 1.00     77.1±1.33µs        ? ?/sec    1.03     79.3±0.44µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00    108.2±0.54µs        ? ?/sec    1.01    109.6±0.59µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    130.9±0.60µs        ? ?/sec    1.02    133.5±0.58µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    110.9±0.56µs        ? ?/sec    1.01    112.4±2.23µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, mandatory, no NULLs                                1.01    163.3±2.16µs        ? ?/sec    1.00    161.6±0.90µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, half NULLs                               1.00    231.6±1.51µs        ? ?/sec    1.00    231.2±2.97µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, no NULLs                                 1.01    167.9±2.38µs        ? ?/sec    1.00    166.7±2.10µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00    200.1±3.90µs        ? ?/sec    1.00    200.6±1.22µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.00    248.7±1.45µs        ? ?/sec    1.00    248.4±4.45µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00    205.3±0.66µs        ? ?/sec    1.01    207.0±0.98µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.00    141.5±2.79µs        ? ?/sec    1.07    150.9±0.51µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, half NULLs                          1.00    218.8±1.29µs        ? ?/sec    1.01    221.3±3.21µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, no NULLs                            1.00    147.1±1.00µs        ? ?/sec    1.07    157.3±2.09µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, mandatory, no NULLs                                1.03    106.3±0.60µs        ? ?/sec    1.00    103.1±1.13µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, half NULLs                               1.00    195.0±1.21µs        ? ?/sec    1.00    194.9±1.15µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, no NULLs                                 1.00    114.6±2.44µs        ? ?/sec    1.01    115.2±2.24µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, mandatory, no NULLs                                      1.00     77.2±1.50µs        ? ?/sec    1.00     77.4±1.30µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, half NULLs                                     1.00    101.6±0.78µs        ? ?/sec    1.00    101.8±0.55µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, no NULLs                                       1.00     79.6±0.46µs        ? ?/sec    1.01     80.0±0.89µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, mandatory, no NULLs                                           1.00    106.3±1.13µs        ? ?/sec    1.01    107.4±1.12µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, half NULLs                                          1.00    171.3±0.97µs        ? ?/sec    1.00    171.8±0.51µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, no NULLs                                            1.00    110.7±1.97µs        ? ?/sec    1.01    111.6±0.79µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, mandatory, no NULLs                               1.05     42.9±0.77µs        ? ?/sec    1.00     40.8±0.24µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, half NULLs                              1.00    138.5±1.73µs        ? ?/sec    1.00    137.8±0.89µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, no NULLs                                1.03     46.7±0.34µs        ? ?/sec    1.00     45.2±0.17µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, mandatory, no NULLs                                      1.08    109.7±0.30µs        ? ?/sec    1.00    101.8±2.25µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, half NULLs                                     1.03    177.8±2.03µs        ? ?/sec    1.00    172.8±1.35µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, no NULLs                                       1.07    114.4±0.64µs        ? ?/sec    1.00    106.7±0.34µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, mandatory, no NULLs                                           1.00     36.7±0.15µs        ? ?/sec    1.00     36.7±0.13µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, half NULLs                                          1.00    135.5±1.87µs        ? ?/sec    1.00    135.8±2.73µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, no NULLs                                            1.00     41.0±0.29µs        ? ?/sec    1.00     41.1±0.20µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, mandatory, no NULLs                                      1.00     82.3±1.04µs        ? ?/sec    1.02     84.0±0.28µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, half NULLs                                     1.00    100.1±1.06µs        ? ?/sec    1.01    100.9±1.14µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, no NULLs                                       1.00     85.1±1.54µs        ? ?/sec    1.02     87.0±0.64µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, mandatory, no NULLs                                           1.00    106.4±2.51µs        ? ?/sec    1.02    108.5±1.56µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, half NULLs                                          1.00    163.7±2.54µs        ? ?/sec    1.00    163.4±1.11µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, no NULLs                                            1.00    110.4±2.33µs        ? ?/sec    1.02    113.0±0.45µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, mandatory, no NULLs                               1.00     23.3±0.74µs        ? ?/sec    1.01     23.6±0.45µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, half NULLs                              1.00    117.6±1.69µs        ? ?/sec    1.01    118.5±1.03µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, no NULLs                                1.00     27.5±0.26µs        ? ?/sec    1.02     27.9±0.29µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, mandatory, no NULLs                                      1.11     91.8±2.47µs        ? ?/sec    1.00     82.5±1.10µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, half NULLs                                     1.03    158.0±0.60µs        ? ?/sec    1.00    153.6±0.64µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, no NULLs                                       1.09     96.0±0.84µs        ? ?/sec    1.00     87.8±0.53µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, mandatory, no NULLs                                           1.00     15.1±0.45µs        ? ?/sec    1.00     15.2±0.37µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, half NULLs                                          1.00    116.0±2.81µs        ? ?/sec    1.00    116.3±2.44µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, no NULLs                                            1.00     21.0±0.36µs        ? ?/sec    1.02     21.3±0.33µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, mandatory, no NULLs                                      1.00     81.2±1.21µs        ? ?/sec    1.00     80.8±0.56µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, half NULLs                                     1.01    102.3±0.97µs        ? ?/sec    1.00    101.8±0.95µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, no NULLs                                       1.01     84.0±2.02µs        ? ?/sec    1.00     83.3±0.84µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, mandatory, no NULLs                                           1.00    107.8±0.81µs        ? ?/sec    1.01    108.6±0.80µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, half NULLs                                          1.00    166.9±2.05µs        ? ?/sec    1.00    166.6±0.76µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, no NULLs                                            1.00    110.8±1.53µs        ? ?/sec    1.00    111.3±2.58µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, mandatory, no NULLs                               1.00    146.4±1.66µs        ? ?/sec    1.00    146.1±0.62µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, half NULLs                              1.00    189.5±2.14µs        ? ?/sec    1.00    190.3±1.24µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, no NULLs                                1.00    151.1±1.24µs        ? ?/sec    1.00    150.9±1.00µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, mandatory, no NULLs                                      1.00     88.1±1.19µs        ? ?/sec    1.11     97.4±0.77µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, half NULLs                                     1.00    160.0±2.41µs        ? ?/sec    1.02    163.3±2.38µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, no NULLs                                       1.00     92.8±0.82µs        ? ?/sec    1.10    102.0±0.64µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, mandatory, no NULLs                                           1.00     40.1±1.76µs        ? ?/sec    1.05     42.2±2.37µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, half NULLs                                          1.00    132.8±4.53µs        ? ?/sec    1.00    132.4±1.23µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, no NULLs                                            1.00     46.1±2.50µs        ? ?/sec    1.01     46.3±2.06µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, mandatory, no NULLs                                       1.01     82.4±1.39µs        ? ?/sec    1.00     81.7±0.70µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, half NULLs                                      1.00    102.4±0.95µs        ? ?/sec    1.00    102.7±1.24µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, no NULLs                                        1.00     84.1±1.03µs        ? ?/sec    1.00     84.4±0.23µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, mandatory, no NULLs                                            1.00    108.2±0.48µs        ? ?/sec    1.01    109.0±0.65µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, half NULLs                                           1.00    169.8±3.23µs        ? ?/sec    1.00    170.2±3.66µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, no NULLs                                             1.00    112.8±0.87µs        ? ?/sec    1.01    114.0±0.44µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, mandatory, no NULLs                                1.00     34.8±0.63µs        ? ?/sec    1.00     34.7±0.47µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, half NULLs                               1.01    130.9±0.99µs        ? ?/sec    1.00    129.3±0.56µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, no NULLs                                 1.00     39.1±1.16µs        ? ?/sec    1.00     39.0±0.22µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, mandatory, no NULLs                                       1.09    102.4±0.66µs        ? ?/sec    1.00     93.7±0.44µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, half NULLs                                      1.04    170.5±1.05µs        ? ?/sec    1.00    164.4±2.31µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, no NULLs                                        1.08    107.1±0.68µs        ? ?/sec    1.00     98.9±0.53µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, mandatory, no NULLs                                            1.00     28.7±0.22µs        ? ?/sec    1.00     28.6±0.25µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, half NULLs                                           1.01    128.6±1.36µs        ? ?/sec    1.00    127.7±3.39µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, no NULLs                                             1.00     33.4±0.33µs        ? ?/sec    1.00     33.3±0.24µs        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings half NULLs                                     1.04      7.5±0.15ms        ? ?/sec    1.00      7.3±0.08ms        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings no NULLs                                       1.02     13.0±0.27ms        ? ?/sec    1.00     12.8±0.12ms        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, mandatory, no NULLs                                     1.00   488.2±15.54µs        ? ?/sec    1.06    516.0±4.71µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, half NULLs                                    1.00   665.9±17.67µs        ? ?/sec    1.04    692.0±3.74µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, no NULLs                                      1.00   505.6±35.64µs        ? ?/sec    1.01    508.5±7.36µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, mandatory, no NULLs                                          1.02   649.9±12.20µs        ? ?/sec    1.00    639.2±3.94µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, half NULLs                                         1.00    781.7±7.73µs        ? ?/sec    1.01    789.6±7.29µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, no NULLs                                           1.01   657.7±11.93µs        ? ?/sec    1.00   651.0±11.53µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, mandatory, no NULLs                                1.02    345.6±8.79µs        ? ?/sec    1.00    338.4±5.40µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, half NULLs                               1.11    416.3±7.45µs        ? ?/sec    1.00    374.6±4.53µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, no NULLs                                 1.03   353.3±11.27µs        ? ?/sec    1.00    344.2±4.06µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.01    274.2±2.40µs        ? ?/sec    1.00    271.2±4.02µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.05    240.4±0.94µs        ? ?/sec    1.00    230.1±1.69µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.00    277.6±2.41µs        ? ?/sec    1.00    276.7±3.68µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.01    506.5±6.99µs        ? ?/sec    1.00    503.3±5.39µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.04    364.8±9.48µs        ? ?/sec    1.00    351.6±3.12µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.01   519.1±36.53µs        ? ?/sec    1.00   512.2±11.52µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, mandatory, no NULLs                                     1.00     92.8±1.54µs        ? ?/sec    1.01     93.5±0.42µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, half NULLs                                    1.00    111.0±1.41µs        ? ?/sec    1.00    111.1±1.57µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, no NULLs                                      1.00     95.2±0.61µs        ? ?/sec    1.03     98.1±1.40µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, mandatory, no NULLs                                          1.00    127.0±2.73µs        ? ?/sec    1.00    127.4±1.13µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, half NULLs                                         1.00    183.7±0.72µs        ? ?/sec    1.01    184.9±2.47µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, no NULLs                                           1.00    130.6±1.33µs        ? ?/sec    1.01    132.5±4.14µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, mandatory, no NULLs                              1.02     43.1±0.33µs        ? ?/sec    1.00     42.5±0.18µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, half NULLs                             1.00    137.4±0.70µs        ? ?/sec    1.00    137.5±1.01µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, no NULLs                               1.01     47.1±0.39µs        ? ?/sec    1.00     46.7±0.58µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, mandatory, no NULLs                                     1.09    110.1±0.45µs        ? ?/sec    1.00    101.2±1.15µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, half NULLs                                    1.04    178.3±2.89µs        ? ?/sec    1.00    172.2±2.71µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, no NULLs                                      1.08    115.1±0.64µs        ? ?/sec    1.00    107.0±0.62µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, mandatory, no NULLs                                          1.00     36.4±0.22µs        ? ?/sec    1.00     36.6±0.19µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, half NULLs                                         1.00    134.7±0.82µs        ? ?/sec    1.00    135.2±2.69µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, no NULLs                                           1.00     41.2±0.17µs        ? ?/sec    1.00     41.1±0.20µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, mandatory, no NULLs                                     1.00     82.3±1.16µs        ? ?/sec    1.03     84.4±0.30µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, half NULLs                                    1.00    100.0±1.32µs        ? ?/sec    1.02    101.6±3.48µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, no NULLs                                      1.00     85.0±1.11µs        ? ?/sec    1.02     87.1±1.20µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, mandatory, no NULLs                                          1.00    106.0±1.66µs        ? ?/sec    1.03    109.3±1.11µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, half NULLs                                         1.00    163.5±1.78µs        ? ?/sec    1.01    164.4±0.69µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, no NULLs                                           1.00    110.8±1.45µs        ? ?/sec    1.02    113.3±0.90µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, mandatory, no NULLs                              1.01     23.8±0.38µs        ? ?/sec    1.00     23.5±0.18µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, half NULLs                             1.02    120.7±2.76µs        ? ?/sec    1.00    118.6±0.72µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, no NULLs                               1.02     28.2±0.32µs        ? ?/sec    1.00     27.8±0.41µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, mandatory, no NULLs                                     1.10     91.3±1.25µs        ? ?/sec    1.00     83.2±1.50µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, half NULLs                                    1.03    158.5±2.21µs        ? ?/sec    1.00    153.3±1.11µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, no NULLs                                      1.10     96.2±1.47µs        ? ?/sec    1.00     87.8±0.43µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, mandatory, no NULLs                                          1.00     18.4±0.59µs        ? ?/sec    1.01     18.6±0.98µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, half NULLs                                         1.01    116.5±0.64µs        ? ?/sec    1.00    115.9±0.97µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, no NULLs                                           1.00     22.9±0.84µs        ? ?/sec    1.01     23.1±0.64µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, mandatory, no NULLs                                     1.00     80.6±0.37µs        ? ?/sec    1.00     80.8±0.64µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, half NULLs                                    1.01    103.0±1.12µs        ? ?/sec    1.00    102.3±1.11µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, no NULLs                                      1.01     83.9±1.45µs        ? ?/sec    1.00     83.4±0.47µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, mandatory, no NULLs                                          1.01    108.0±0.76µs        ? ?/sec    1.00    106.8±0.37µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, half NULLs                                         1.00    166.8±1.11µs        ? ?/sec    1.01    167.8±2.06µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, no NULLs                                           1.00    110.2±0.78µs        ? ?/sec    1.00    109.9±0.69µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, mandatory, no NULLs                              1.00    145.6±0.44µs        ? ?/sec    1.00    146.3±0.46µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, half NULLs                             1.00    189.3±2.74µs        ? ?/sec    1.00    189.8±0.72µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, no NULLs                               1.00    150.2±0.57µs        ? ?/sec    1.01    151.4±1.67µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, mandatory, no NULLs                                     1.00     87.8±1.87µs        ? ?/sec    1.11     97.7±0.78µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, half NULLs                                    1.00    159.3±2.83µs        ? ?/sec    1.03    163.8±0.60µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, no NULLs                                      1.00     92.8±1.18µs        ? ?/sec    1.10    102.5±0.83µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, mandatory, no NULLs                                          1.00     40.8±1.56µs        ? ?/sec    1.06     43.3±1.72µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, half NULLs                                         1.01    134.2±1.46µs        ? ?/sec    1.00    133.3±1.29µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, no NULLs                                           1.00     44.9±1.26µs        ? ?/sec    1.09     48.9±1.70µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, mandatory, no NULLs                                      1.00     88.8±1.45µs        ? ?/sec    1.02     90.2±1.53µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, half NULLs                                     1.00    105.8±0.43µs        ? ?/sec    1.00    106.2±1.50µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, no NULLs                                       1.00     91.2±0.46µs        ? ?/sec    1.02     93.0±1.83µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, mandatory, no NULLs                                           1.00    118.6±4.35µs        ? ?/sec    1.01    120.3±0.69µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, half NULLs                                          1.00    174.6±0.69µs        ? ?/sec    1.00    175.1±1.89µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, no NULLs                                            1.00    122.3±0.59µs        ? ?/sec    1.02    125.2±2.96µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, mandatory, no NULLs                               1.01     34.8±0.46µs        ? ?/sec    1.00     34.6±0.14µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, half NULLs                              1.00    130.7±1.01µs        ? ?/sec    1.00    130.5±2.23µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, no NULLs                                1.00     39.0±0.26µs        ? ?/sec    1.00     38.8±0.23µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, mandatory, no NULLs                                      1.09    102.2±0.40µs        ? ?/sec    1.00     93.8±1.30µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, half NULLs                                     1.04    170.3±2.22µs        ? ?/sec    1.00    164.3±1.35µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, no NULLs                                       1.08    107.5±2.07µs        ? ?/sec    1.00     99.1±1.05µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, mandatory, no NULLs                                           1.00     28.7±0.58µs        ? ?/sec    1.00     28.7±0.11µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, half NULLs                                          1.00    127.5±0.54µs        ? ?/sec    1.00    126.9±1.05µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, no NULLs                                            1.00     33.2±0.11µs        ? ?/sec    1.01     33.5±0.16µs        ? ?/sec

@alamb-ghbot
Copy link

🤖 ./gh_compare_arrow.sh gh_compare_arrow.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/less_parquet_view_allocations (9e4bbb8) to d81d6c3 diff
BENCH_NAME=arrow_reader
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental --bench arrow_reader
BENCH_FILTER=
BENCH_BRANCH_NAME=alamb_less_parquet_view_allocations
Results will be posted here when complete

@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

group                                                                                                      alamb_less_parquet_view_allocations    main
-----                                                                                                      -----------------------------------    ----
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                           1.06   1069.2±7.88µs        ? ?/sec    1.00   1006.0±4.01µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                          1.00  1183.3±15.68µs        ? ?/sec    1.07   1268.5±6.88µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                            1.06  1077.3±11.36µs        ? ?/sec    1.00  1013.6±10.88µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, mandatory, no NULLs                                     1.00    478.6±4.31µs        ? ?/sec    1.08    515.3±4.11µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, half NULLs                                    1.00    662.4±8.18µs        ? ?/sec    1.05    698.7±3.75µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, no NULLs                                      1.00    494.8±5.18µs        ? ?/sec    1.03    509.8±5.10µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, mandatory, no NULLs                                          1.01   546.9±10.67µs        ? ?/sec    1.00    543.4±5.55µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, half NULLs                                         1.00    733.0±5.70µs        ? ?/sec    1.02    747.2±5.61µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, no NULLs                                           1.00    556.6±3.09µs        ? ?/sec    1.00    558.7±8.08µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    272.7±4.63µs        ? ?/sec    1.00    272.0±5.67µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.00    238.5±5.52µs        ? ?/sec    1.00    237.8±3.59µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.00    277.5±3.48µs        ? ?/sec    1.04   287.4±23.05µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.00    348.1±3.33µs        ? ?/sec    1.08   377.5±10.42µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.00    322.9±1.57µs        ? ?/sec    1.08    348.2±8.59µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.00    289.8±1.56µs        ? ?/sec    1.00    289.4±2.06µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.00    357.6±4.66µs        ? ?/sec    1.07    382.9±6.66µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs     1.08  1009.7±13.57µs        ? ?/sec    1.00   935.3±50.00µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, half NULLs    1.10    870.3±4.53µs        ? ?/sec    1.00   791.8±10.07µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, no NULLs      1.09  1022.8±28.48µs        ? ?/sec    1.00    935.7±7.80µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                 1.08    326.4±4.36µs        ? ?/sec    1.00    301.2±5.42µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                1.14    519.2±2.91µs        ? ?/sec    1.00    457.3±6.90µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                  1.08   335.0±10.95µs        ? ?/sec    1.00    310.6±4.20µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, mandatory, no NULLs        1.00    161.0±1.39µs        ? ?/sec    1.24   198.9±17.35µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, half NULLs       1.00    278.0±1.47µs        ? ?/sec    1.22    338.5±5.97µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, no NULLs         1.00    167.5±0.74µs        ? ?/sec    1.21    201.8±2.65µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, mandatory, no NULLs                    1.00     75.9±0.93µs        ? ?/sec    1.57    118.8±1.92µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, half NULLs                   1.00    234.1±1.32µs        ? ?/sec    1.28    298.5±3.75µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, no NULLs                     1.00     82.2±0.73µs        ? ?/sec    1.51    124.0±0.55µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, mandatory, no NULLs                    1.07    737.5±9.94µs        ? ?/sec    1.00    687.4±3.43µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, half NULLs                   1.10    588.8±5.46µs        ? ?/sec    1.00    534.3±5.57µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, no NULLs                     1.07   744.2±14.64µs        ? ?/sec    1.00    694.7±7.28µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, mandatory, no NULLs                                1.01     69.8±2.94µs        ? ?/sec    1.00     69.2±2.21µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, half NULLs                               1.15    257.5±4.05µs        ? ?/sec    1.00    224.8±2.04µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, no NULLs                                 1.00     77.1±3.32µs        ? ?/sec    1.02     78.8±2.76µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, mandatory, no NULLs                     1.09     94.4±0.44µs        ? ?/sec    1.00     86.6±1.47µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, half NULLs                    1.00    208.8±7.04µs        ? ?/sec    1.09    227.0±3.38µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, no NULLs                      1.08     99.1±0.76µs        ? ?/sec    1.00     91.7±0.76µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, mandatory, no NULLs                                 1.00      9.2±0.17µs        ? ?/sec    1.02      9.3±0.13µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, half NULLs                                1.00    164.4±1.31µs        ? ?/sec    1.14    186.8±0.62µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, no NULLs                                  1.01     14.2±0.12µs        ? ?/sec    1.00     14.0±0.19µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, mandatory, no NULLs                     1.09    184.6±0.93µs        ? ?/sec    1.00    169.6±0.42µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, half NULLs                    1.00    330.6±6.64µs        ? ?/sec    1.02   335.7±20.43µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, no NULLs                      1.08    190.1±3.59µs        ? ?/sec    1.00    175.5±2.06µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, mandatory, no NULLs                                 1.00     14.7±0.61µs        ? ?/sec    1.02     15.0±0.59µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, half NULLs                                1.00   248.6±13.01µs        ? ?/sec    1.03    255.4±2.30µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, no NULLs                                  1.03     20.3±0.81µs        ? ?/sec    1.00     19.8±0.42µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, mandatory, no NULLs                     1.08    366.2±1.63µs        ? ?/sec    1.00    340.3±3.11µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, half NULLs                    1.14    389.4±2.44µs        ? ?/sec    1.00    342.3±3.84µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, no NULLs                      1.08    373.4±7.60µs        ? ?/sec    1.00    346.2±1.59µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, mandatory, no NULLs                                 1.00     27.0±0.43µs        ? ?/sec    1.01     27.3±0.68µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, half NULLs                                1.18    219.1±7.32µs        ? ?/sec    1.00    185.6±1.09µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, no NULLs                                  1.01     34.1±0.63µs        ? ?/sec    1.00     33.9±0.40µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00    109.8±1.46µs        ? ?/sec    1.01    110.9±0.97µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    129.4±0.90µs        ? ?/sec    1.00    129.6±3.01µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    114.2±7.96µs        ? ?/sec    1.00    113.9±3.05µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, mandatory, no NULLs                                1.00    160.3±2.63µs        ? ?/sec    1.00    161.0±1.25µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, half NULLs                               1.00    221.8±2.92µs        ? ?/sec    1.00    221.1±1.98µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, no NULLs                                 1.01    166.9±6.98µs        ? ?/sec    1.00    166.0±0.36µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.01     76.1±0.61µs        ? ?/sec    1.00     75.0±1.07µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.01    175.8±1.57µs        ? ?/sec    1.00    174.8±1.33µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00     80.8±0.67µs        ? ?/sec    1.01     81.5±1.60µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.07    143.5±2.63µs        ? ?/sec    1.00    134.6±0.56µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, half NULLs                          1.04   218.2±19.18µs        ? ?/sec    1.00    208.8±3.02µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, no NULLs                            1.06    148.8±0.88µs        ? ?/sec    1.00    140.7±1.08µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, mandatory, no NULLs                                1.00     71.5±0.93µs        ? ?/sec    1.00     71.6±0.72µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, half NULLs                               1.00    173.1±1.36µs        ? ?/sec    1.00    172.6±2.40µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, no NULLs                                 1.00     76.4±1.14µs        ? ?/sec    1.03     78.5±0.92µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00    108.2±0.69µs        ? ?/sec    1.01    109.8±0.36µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    131.0±2.13µs        ? ?/sec    1.00    131.0±1.18µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    111.1±1.68µs        ? ?/sec    1.00    111.2±0.65µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, mandatory, no NULLs                                1.00    162.7±0.94µs        ? ?/sec    1.00    162.9±3.62µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, half NULLs                               1.03    232.8±1.38µs        ? ?/sec    1.00    224.9±3.81µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, no NULLs                                 1.02    169.5±6.78µs        ? ?/sec    1.00    165.5±0.91µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00    200.1±0.65µs        ? ?/sec    1.00    199.2±1.41µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.00    243.3±2.72µs        ? ?/sec    1.03    249.6±2.42µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00    206.2±0.91µs        ? ?/sec    1.00    205.5±0.83µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.00    140.4±0.94µs        ? ?/sec    1.08    151.3±2.70µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, half NULLs                          1.00    215.7±0.68µs        ? ?/sec    1.03    222.4±3.33µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, no NULLs                            1.00    146.0±1.12µs        ? ?/sec    1.07    156.8±1.88µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, mandatory, no NULLs                                1.00    102.7±1.50µs        ? ?/sec    1.00    102.5±1.44µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, half NULLs                               1.00    195.2±0.95µs        ? ?/sec    1.00    195.9±3.13µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, no NULLs                                 1.00    110.1±2.51µs        ? ?/sec    1.02    112.6±0.44µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, mandatory, no NULLs                                      1.01     78.3±1.22µs        ? ?/sec    1.00     77.3±0.36µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, half NULLs                                     1.00    101.5±0.63µs        ? ?/sec    1.00    101.5±0.63µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, no NULLs                                       1.00     80.0±1.11µs        ? ?/sec    1.00     79.9±0.34µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, mandatory, no NULLs                                           1.01    108.5±2.59µs        ? ?/sec    1.00    107.4±1.37µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, half NULLs                                          1.00    171.6±2.83µs        ? ?/sec    1.00    171.4±1.41µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, no NULLs                                            1.01    112.3±2.11µs        ? ?/sec    1.00    111.7±1.20µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, mandatory, no NULLs                               1.05     42.8±0.32µs        ? ?/sec    1.00     40.9±0.25µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, half NULLs                              1.01    139.3±4.34µs        ? ?/sec    1.00    137.3±2.45µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, no NULLs                                1.03     46.7±0.28µs        ? ?/sec    1.00     45.2±0.28µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, mandatory, no NULLs                                      1.08    109.9±0.58µs        ? ?/sec    1.00    101.3±1.43µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, half NULLs                                     1.02    176.8±5.82µs        ? ?/sec    1.00    172.7±4.62µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, no NULLs                                       1.07    114.5±1.97µs        ? ?/sec    1.00    107.0±3.66µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, mandatory, no NULLs                                           1.00     36.6±0.09µs        ? ?/sec    1.01     36.9±0.19µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, half NULLs                                          1.00    135.4±0.48µs        ? ?/sec    1.00    134.8±1.57µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, no NULLs                                            1.00     41.0±0.34µs        ? ?/sec    1.01     41.3±0.34µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, mandatory, no NULLs                                      1.00     82.4±1.43µs        ? ?/sec    1.02     84.3±0.65µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, half NULLs                                     1.00    100.0±1.39µs        ? ?/sec    1.01    100.9±0.64µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, no NULLs                                       1.00     85.3±1.62µs        ? ?/sec    1.03     87.5±4.16µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, mandatory, no NULLs                                           1.00    106.4±2.38µs        ? ?/sec    1.02    108.6±0.42µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, half NULLs                                          1.00    162.4±0.87µs        ? ?/sec    1.01    164.1±1.96µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, no NULLs                                            1.00    110.9±2.14µs        ? ?/sec    1.02    113.4±1.88µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, mandatory, no NULLs                               1.00     23.4±0.19µs        ? ?/sec    1.00     23.5±0.95µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, half NULLs                              1.00    117.8±0.50µs        ? ?/sec    1.00    118.1±1.78µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, no NULLs                                1.00     27.6±0.18µs        ? ?/sec    1.02     28.1±1.03µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, mandatory, no NULLs                                      1.10     91.4±0.52µs        ? ?/sec    1.00     82.7±0.62µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, half NULLs                                     1.02    156.1±0.77µs        ? ?/sec    1.00    153.6±1.53µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, no NULLs                                       1.09     96.3±1.31µs        ? ?/sec    1.00     88.1±1.87µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, mandatory, no NULLs                                           1.00     15.2±0.76µs        ? ?/sec    1.03     15.7±0.23µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, half NULLs                                          1.00    116.0±1.48µs        ? ?/sec    1.00    116.3±0.88µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, no NULLs                                            1.00     21.1±0.42µs        ? ?/sec    1.02     21.6±0.19µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, mandatory, no NULLs                                      1.00     80.9±0.59µs        ? ?/sec    1.00     80.6±0.68µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, half NULLs                                     1.00    101.6±0.41µs        ? ?/sec    1.01    102.9±3.21µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, no NULLs                                       1.00     83.7±0.32µs        ? ?/sec    1.00     83.4±0.91µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, mandatory, no NULLs                                           1.00    107.9±1.69µs        ? ?/sec    1.02    109.6±5.21µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, half NULLs                                          1.00    166.8±5.88µs        ? ?/sec    1.00    166.5±3.23µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, no NULLs                                            1.00    110.9±2.58µs        ? ?/sec    1.01    111.5±1.45µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, mandatory, no NULLs                               1.00    145.8±0.65µs        ? ?/sec    1.00    146.1±1.10µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, half NULLs                              1.00    188.6±0.87µs        ? ?/sec    1.01    189.8±3.90µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, no NULLs                                1.00    151.1±1.22µs        ? ?/sec    1.00    151.5±1.62µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, mandatory, no NULLs                                      1.00     88.0±3.07µs        ? ?/sec    1.11     97.9±1.22µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, half NULLs                                     1.00    156.9±1.10µs        ? ?/sec    1.05    165.1±8.49µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, no NULLs                                       1.00     91.8±1.38µs        ? ?/sec    1.12    102.7±0.86µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, mandatory, no NULLs                                           1.00     43.8±1.97µs        ? ?/sec    1.06     46.6±2.49µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, half NULLs                                          1.00    132.7±1.96µs        ? ?/sec    1.00    132.9±1.46µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, no NULLs                                            1.08     52.0±2.72µs        ? ?/sec    1.00     48.3±1.66µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, mandatory, no NULLs                                       1.00     82.2±1.81µs        ? ?/sec    1.00     82.0±2.28µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, half NULLs                                      1.01    103.3±4.51µs        ? ?/sec    1.00    102.5±0.68µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, no NULLs                                        1.00     85.4±1.99µs        ? ?/sec    1.00     85.1±3.04µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, mandatory, no NULLs                                            1.01    110.5±3.39µs        ? ?/sec    1.00    109.1±0.59µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, half NULLs                                           1.00    170.0±1.89µs        ? ?/sec    1.00    169.6±0.60µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, no NULLs                                             1.01    115.1±3.24µs        ? ?/sec    1.00    114.1±1.19µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, mandatory, no NULLs                                1.00     34.8±0.23µs        ? ?/sec    1.00     34.9±0.17µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, half NULLs                               1.01    130.8±0.45µs        ? ?/sec    1.00    129.4±0.49µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, no NULLs                                 1.00     39.0±0.17µs        ? ?/sec    1.00     39.1±0.26µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, mandatory, no NULLs                                       1.09    102.4±0.62µs        ? ?/sec    1.00     93.7±0.44µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, half NULLs                                      1.03    169.8±6.73µs        ? ?/sec    1.00    164.5±2.34µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, no NULLs                                        1.09    107.6±3.39µs        ? ?/sec    1.00     99.1±1.68µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, mandatory, no NULLs                                            1.00     28.7±0.44µs        ? ?/sec    1.00     28.6±0.20µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, half NULLs                                           1.01    128.7±0.60µs        ? ?/sec    1.00    127.6±2.20µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, no NULLs                                             1.01     33.6±0.39µs        ? ?/sec    1.00     33.4±0.36µs        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings half NULLs                                     1.04      7.7±0.16ms        ? ?/sec    1.00      7.4±0.10ms        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings no NULLs                                       1.05     14.7±0.27ms        ? ?/sec    1.00     14.0±0.38ms        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, mandatory, no NULLs                                     1.00    489.8±9.14µs        ? ?/sec    1.05   516.3±13.35µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, half NULLs                                    1.00    648.7±6.00µs        ? ?/sec    1.07    696.5±6.10µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, no NULLs                                      1.00   485.9±18.88µs        ? ?/sec    1.05    509.9±3.60µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, mandatory, no NULLs                                          1.00    622.4±5.59µs        ? ?/sec    1.02    636.9±6.66µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, half NULLs                                         1.00    774.1±9.27µs        ? ?/sec    1.03    797.4±6.19µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, no NULLs                                           1.00    635.3±6.70µs        ? ?/sec    1.03   652.7±10.86µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, mandatory, no NULLs                                1.00    331.9±4.14µs        ? ?/sec    1.01    333.7±7.28µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, half NULLs                               1.09    410.1±6.05µs        ? ?/sec    1.00    375.7±2.04µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, no NULLs                                 1.00    338.6±5.72µs        ? ?/sec    1.01    342.2±7.91µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    272.5±6.34µs        ? ?/sec    1.05    284.9±7.24µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.03    238.6±0.87µs        ? ?/sec    1.00    231.3±2.91µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.00    276.5±5.66µs        ? ?/sec    1.01    278.9±3.64µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.00    497.1±7.36µs        ? ?/sec    1.01    504.2±2.37µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.01    358.0±2.30µs        ? ?/sec    1.00    355.0±9.66µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.00    505.7±9.94µs        ? ?/sec    1.02    517.9±8.35µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, mandatory, no NULLs                                     1.00     93.7±1.76µs        ? ?/sec    1.00     93.5±1.03µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, half NULLs                                    1.00    111.3±2.26µs        ? ?/sec    1.00    110.8±0.87µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, no NULLs                                      1.00     96.5±1.51µs        ? ?/sec    1.00     96.2±1.32µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, mandatory, no NULLs                                          1.00    128.2±2.52µs        ? ?/sec    1.00    127.7±1.32µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, half NULLs                                         1.00    184.7±2.56µs        ? ?/sec    1.00    184.5±2.37µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, no NULLs                                           1.00    133.0±2.58µs        ? ?/sec    1.00    132.5±3.41µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, mandatory, no NULLs                              1.01     43.1±0.23µs        ? ?/sec    1.00     42.7±0.35µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, half NULLs                             1.00    137.4±2.59µs        ? ?/sec    1.00    137.5±1.35µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, no NULLs                               1.01     47.2±0.32µs        ? ?/sec    1.00     46.8±0.61µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, mandatory, no NULLs                                     1.09    110.8±3.00µs        ? ?/sec    1.00    101.4±0.52µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, half NULLs                                    1.02    176.0±1.41µs        ? ?/sec    1.00    172.3±0.79µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, no NULLs                                      1.07    115.1±1.74µs        ? ?/sec    1.00    107.2±0.71µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, mandatory, no NULLs                                          1.00     36.4±0.11µs        ? ?/sec    1.01     36.8±0.26µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, half NULLs                                         1.00    135.3±0.71µs        ? ?/sec    1.00    135.0±2.27µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, no NULLs                                           1.00     41.3±0.23µs        ? ?/sec    1.00     41.4±0.35µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, mandatory, no NULLs                                     1.00     83.2±1.33µs        ? ?/sec    1.01     84.4±1.57µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, half NULLs                                    1.00    100.8±2.66µs        ? ?/sec    1.00    101.2±0.71µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, no NULLs                                      1.00     85.9±1.34µs        ? ?/sec    1.02     87.5±0.64µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, mandatory, no NULLs                                          1.00    108.4±3.18µs        ? ?/sec    1.01    109.1±1.97µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, half NULLs                                         1.00    163.4±1.43µs        ? ?/sec    1.01    164.4±0.78µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, no NULLs                                           1.00    113.0±2.52µs        ? ?/sec    1.00    113.2±0.75µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, mandatory, no NULLs                              1.00     23.8±0.26µs        ? ?/sec    1.01     23.9±0.33µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, half NULLs                             1.00    119.8±2.73µs        ? ?/sec    1.00    119.4±1.38µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, no NULLs                               1.00     26.7±0.36µs        ? ?/sec    1.05     28.1±0.83µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, mandatory, no NULLs                                     1.10     91.3±1.99µs        ? ?/sec    1.00     83.2±2.56µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, half NULLs                                    1.03    156.9±4.21µs        ? ?/sec    1.00    152.7±0.92µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, no NULLs                                      1.09     96.0±2.60µs        ? ?/sec    1.00     87.9±0.90µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, mandatory, no NULLs                                          1.01     18.7±0.55µs        ? ?/sec    1.00     18.4±0.64µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, half NULLs                                         1.00    116.5±0.45µs        ? ?/sec    1.00    116.1±1.20µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, no NULLs                                           1.00     22.7±0.51µs        ? ?/sec    1.00     22.6±0.27µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, mandatory, no NULLs                                     1.02     82.3±1.22µs        ? ?/sec    1.00     80.9±0.94µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, half NULLs                                    1.00    101.4±1.65µs        ? ?/sec    1.01    102.6±5.10µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, no NULLs                                      1.00     83.6±1.44µs        ? ?/sec    1.00     83.3±0.75µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, mandatory, no NULLs                                          1.00    108.1±1.03µs        ? ?/sec    1.01    109.1±1.30µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, half NULLs                                         1.00    165.9±2.34µs        ? ?/sec    1.04    172.2±3.63µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, no NULLs                                           1.00    111.1±0.76µs        ? ?/sec    1.00    110.7±0.55µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, mandatory, no NULLs                              1.00    146.2±0.72µs        ? ?/sec    1.00    146.1±0.58µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, half NULLs                             1.00    189.3±1.54µs        ? ?/sec    1.00    190.0±2.48µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, no NULLs                               1.00    151.0±0.69µs        ? ?/sec    1.00    151.4±0.72µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, mandatory, no NULLs                                     1.00     87.8±0.92µs        ? ?/sec    1.11     97.5±1.51µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, half NULLs                                    1.00    157.5±4.27µs        ? ?/sec    1.04    164.4±1.33µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, no NULLs                                      1.00     92.8±3.84µs        ? ?/sec    1.12    103.8±6.61µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, mandatory, no NULLs                                          1.00     43.2±2.84µs        ? ?/sec    1.03     44.5±2.28µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, half NULLs                                         1.00    133.0±2.89µs        ? ?/sec    1.01    133.9±2.31µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, no NULLs                                           1.00     48.3±1.32µs        ? ?/sec    1.04     50.1±1.33µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, mandatory, no NULLs                                      1.00     88.8±0.89µs        ? ?/sec    1.01     89.9±0.68µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, half NULLs                                     1.00    105.9±0.66µs        ? ?/sec    1.00    106.0±1.09µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, no NULLs                                       1.01     93.5±1.11µs        ? ?/sec    1.00     92.5±0.68µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, mandatory, no NULLs                                           1.00    118.6±2.84µs        ? ?/sec    1.01    120.2±2.00µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, half NULLs                                          1.00    174.9±2.90µs        ? ?/sec    1.00    175.2±3.89µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, no NULLs                                            1.00    122.9±0.67µs        ? ?/sec    1.01    124.5±0.52µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, mandatory, no NULLs                               1.01     34.8±0.47µs        ? ?/sec    1.00     34.6±0.32µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, half NULLs                              1.01    130.8±2.04µs        ? ?/sec    1.00    129.7±2.10µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, no NULLs                                1.01     39.2±0.49µs        ? ?/sec    1.00     38.9±0.59µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, mandatory, no NULLs                                      1.09    102.5±0.77µs        ? ?/sec    1.00     93.7±1.09µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, half NULLs                                     1.02    168.2±2.04µs        ? ?/sec    1.00    164.8±4.25µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, no NULLs                                       1.08    107.2±1.01µs        ? ?/sec    1.00     98.9±0.64µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, mandatory, no NULLs                                           1.00     28.7±0.18µs        ? ?/sec    1.00     28.6±0.28µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, half NULLs                                          1.01    128.1±1.76µs        ? ?/sec    1.00    127.0±2.10µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, no NULLs                                            1.00     33.4±0.26µs        ? ?/sec    1.00     33.3±0.08µs        ? ?/sec

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb
Copy link
Contributor Author

alamb commented Jan 16, 2026

The benchmakrs now show a small but repeatable improvement for the array types. I am not sure how real it is but I am now convinced this PR is an improvement

group                                                                                                      alamb_less_parquet_view_allocations    main
-----                                                                                                      -----------------------------------    ----
...
arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    270.3±4.43µs        ? ?/sec    1.04    280.3±4.12µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.04    240.2±2.87µs        ? ?/sec    1.00    231.5±3.62µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.00    274.9±4.35µs        ? ?/sec    1.01    278.2±3.97µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.00   352.1±10.76µs        ? ?/sec    1.07    376.8±5.89µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.00    324.5±3.75µs        ? ?/sec    1.08    350.0±3.34µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.00    290.8±3.70µs        ? ?/sec    1.03    298.8±2.92µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.00    360.0±3.41µs        ? ?/sec    1.06    382.9±1.37µs        ? ?/sec
...
arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.01    274.2±2.40µs        ? ?/sec    1.00    271.2±4.02µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.05    240.4±0.94µs        ? ?/sec    1.00    230.1±1.69µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.00    277.6±2.41µs        ? ?/sec    1.00    276.7±3.68µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.01    506.5±6.99µs        ? ?/sec    1.00    503.3±5.39µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.04    364.8±9.48µs        ? ?/sec    1.00    351.6±3.12µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.01   519.1±36.53µs        ? ?/sec    1.00   512.2±11.52µs        ? ?/sec
...

@jhorstmann
Copy link
Contributor

I ran the benchmark for "arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs" locally with samply and can confirm that the code in this PR is an improvement. The difference was small, 0.5% for ViewBuffer::into_array on main vs 0.2% on this branch, so it is likely that some benchmark runs will show random fluctuation in either direction.

@alamb
Copy link
Contributor Author

alamb commented Jan 17, 2026

Thank you for double checking @jhorstmann and for the reviews @jhorstmann and @scovich

@alamb alamb merged commit 96b3052 into apache:main Jan 17, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

parquet Changes to the parquet crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants